const env = process.env.NODE_ENV
// 拼接路径
const resolve = (dir) => require("path").join(__dirname, dir)

module.exports = {
  publicPath: env === "development" ? "/" : "./",
  lintOnSave: true,
  outputDir: "dist",
  assetsDir: "",
  runtimeCompiler: true,
  productionSourceMap: false,
  // devServer: {
  //   publicPath: env === "development" ? "/" : "./",
  //   open: true,
  //   host: "0.0.0.0",
  //   // port: 18180,
  //   port: 29190,
  //   https: false,
  //   hotOnly: false,
  //   proxy: {
  //     "/api": {
  //       // target: 'http://127.0.0.1:29189',
  //       target: "http://192.168.124.24:29190",
  //       // target: 'http://192.168.3.245:23001', // 本地请求后端真正的地址，只有本地开发时才会做代理，上线不执行这段代码
  //       // target: 'http://192.168.4.3:19193', // 本地请求后端真正的地址，只有本地开发时才会做代理，上线不执行这段代码
  //       changeOrigin: true,
  //       pathRewrite: {
  //         // 路径重写
  //         "^/api": ""
  //       }
  //     },
  //     "/dicApi": {
  //       target: "http://192.168.3.30:23001",
  //       changeOrigin: true,
  //       pathRewrite: {
  //         // 路径重写
  //         "^/dicApi": ""
  //       }
  //     },
  //     "/fileApi": {
  //       // target: 'http://192.168.3.30:23002',
  //       target: "http://192.168.3.30:21000",
  //       changeOrigin: true,
  //       pathRewrite: {
  //         // 路径重写
  //         "^/fileApi": ""
  //       }
  //     }
  //   }
  // },
  css: {
    loaderOptions: {
      postcss: {
        plugins: [
          require("postcss-pxtorem")({
            // 换算的基数 默认为37.5，一般不建议修改它，使用vant ui框架中也是默认37.5
            rootValue: 37.5,
            // 忽略转换正则匹配项，插件会转化所有的样式的px。比如引入了三方UI，也会被转化.
            // 项目中有不需要自动转换成PX的样式，就在此添加，如: .vant  表示 .vant 开头的都不会转换
            selectorBlackList: [],
            // selectorBlackList: ['.van'],
            propList: ["*"] // 属性的选择器，*表示通用
          })
        ]
      }
      // less: {}
    }
  },
  // 默认设置: https://github.com/vuejs/vue-cli/tree/dev/packages/@vue/cli-service/lib/config/base.js
  chainWebpack: (config) => {
    /**
     * 删除懒加载模块的 prefetch preload，降低带宽压力
     * https://cli.vuejs.org/zh/guide/html-and-static-assets.html#prefetch
     * https://cli.vuejs.org/zh/guide/html-and-static-assets.html#preload
     * 而且预渲染时生成的 prefetch 标签是 modern 版本的，低版本浏览器是不需要的
     */
    config.plugins.delete("prefetch").delete("preload")
    // 解决 cli3 热更新失效 https://github.com/vuejs/vue-cli/issues/1559
    config.resolve.symlinks(true)
    config
      // 开发环境
      .when(
        process.env.NODE_ENV === "development",
        // sourcemap不包含列信息
        (config) => config.devtool("cheap-source-map")
      )
      // 非开发环境
      .when(process.env.NODE_ENV !== "development", (config) => {})
    // image exclude
    const imagesRule = config.module.rule("images")
    imagesRule
      .test(/\.(png|jpe?g|gif|webp|svg)(\?.*)?$/)
      .exclude.add(resolve("src/assets/svg"))
      .end()
    // 重新设置 alias
    config.resolve.alias.set("@", resolve("src")).set("@api", resolve("src/api"))
    // node
    config.node.set("__dirname", true).set("__filename", true)
  }
}
